home *** CD-ROM | disk | FTP | other *** search
- #define PATCH(trap) Old_ ## trap = NGetTrapAddress(_ ## trap, ToolTrap );\
- NSetTrapAddress( (long)My_ ## trap, _ ## trap, ToolTrap )
-
- #define UNPATCH(trap) NSetTrapAddress( (long)Old_ ## trap,\
- _ ## trap, ToolTrap )
-
- #define HEAD_PATCH_HEADER(trapname) \
- movem.l a0-a5/d0-d7, -(SP) ; a7 is SP, a6 is lunk\
- LEA main, A4 ; set up globals\
- bra.s @1 \
- @0 dc.L 0 ; place to store old trap address\
- @1 LEA @0, A0 \
- move.L Old_ ## trapname, (A0) ; store it in @0
-
- #define HEAD_PATCH_FINISH \
- movem.L (SP)+, A0-A5/D0-D7 \
- unlk A6 \
- move.L @0, -(SP) \
- RTS
-
- #define TAIL_PATCH_FINISH(arg_bytes) \
- movem.L (SP)+, A0-A5/D0-D7 ; restore registers\
- unlk A6 \
- move.L (SP), arg_bytes(SP) ; copy return address into args\
- addI.L #+arg_bytes, SP ; pop arguments\
- RTS
-